/*
 * @lc app=leetcode.cn id=42 lang=javascript
 *
 * [42] 接雨水
 *
 * https://leetcode-cn.com/problems/trapping-rain-water/description/
 *
 * algorithms
 * Hard (44.97%)
 * Likes:    510
 * Dislikes: 0
 * Total Accepted:    21.1K
 * Total Submissions: 46.3K
 * Testcase Example:  '[0,1,0,2,1,0,1,3,2,1,2,1]'
 *
 * 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。
 * 
 * 
 * 
 * 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接 6 个单位的雨水（蓝色部分表示雨水）。 感谢
 * Marcos 贡献此图。
 * 
 * 示例:
 * 
 * 输入: [0,1,0,2,1,0,1,3,2,1,2,1]
 * 输出: 6
 * 
 */
/**
 * @param {number[]} height
 * @return {number}
 */
var trap = function(height) {
    let leftMax = []
    let rightMax = []
    let max = 0
    let volumn = 0
    for(var i = 0;i<height.length;i++){
        leftMax[i] = max = Math.max(height[i],max)
    }
    
    max = 0

    for(var i=height.length-1;i>=0;i--){
        rightMax[i] = max = Math.max(height[i],max)
    }

    for(var i=0;i<height.length;i++){
        volumn+=(Math.min(rightMax[i],leftMax[i])-height[i])
    }
    return volumn
};

